package com.xbh.boot_study.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;

@Component
@Validated
//可以自定义配置文件使用 @PropertySource 加载指定的配置文件
//@PropertySource("classpath:a.yml")
@ConfigurationProperties(prefix = "student")
public class Student {

//    ConfigurationProperties支持松散绑定
//    松散绑定：比如 yml 中写的 last-name，这个和 lastName 是一样的， - 后面跟着的字母默认是大写的。这就是松散绑定。
//    // 空检查
//    @Null       验证对象是否为null
//    @NotNull    验证对象是否不为null, 无法查检长度为0的字符串
//    @NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
//    @NotEmpty   检查约束元素是否为NULL或者是EMPTY.
//
//    // Booelan检查
//    @AssertTrue     验证 Boolean 对象是否为 true
//    @AssertFalse    验证 Boolean 对象是否为 false
//
//// 长度检查
//    @Size(min=, max=) 验证对象（Array,Collection,Map,String）长度是否在给定的范围之内
//    @Length(min=, max=) string is between min and max included.
//
//    // 日期检查
//    @Past       验证 Date 和 Calendar 对象是否在当前时间之前
//    @Future     验证 Date 和 Calendar 对象是否在当前时间之后
//    @Pattern    验证 String 对象是否符合正则表达式的规则

    @Max(value=50, message="ID不能超过50!")
    private Integer sid;
    @NotNull(message="名字不能为空")
    private String name;
    @Email(message = "邮箱格式错误!")
    private String email;

    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
